﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include "GcmpModelInterface.h"
#include "IDatasetFilter.h"
#include "OwnerPtr.h"

namespace gcmp
{
    /// \brief 具体的过滤器
    class GCMP_MODEL_INTERFACE_EXPORT IDatasetActionFilter : virtual public IDatasetFilter
    {
        DEFINE_CAST_DERIVED(gcmp::IDatasetActionFilter, gcmp::IDatasetFilter)
    public:
        /// \brief 静态构造方法
        ///
        /// \return OwnerPtr<IDatasetActionFilter> 新建的逻辑或过滤器
        static OwnerPtr<IDatasetActionFilter> Create();
    public:
        /// \brief 设置过滤器行为
        ///
        /// \param 过滤器行为
        virtual void SetActionType(DatasetFilterActionType actionType) = 0;

        /// \brief 获取标准编码的键
        ///
        /// \return const std::wstring& 标准编码的键
        virtual const std::wstring& GetStandardCodeKey() const = 0;

        /// \brief 设置标准编码的键
        ///
        /// \param key 标准编码的键
        virtual void SetStandardCodeKey(const std::wstring& key) = 0;

        /// \brief 获取标准编码的值
        ///
        /// \return const std::wstring& 获取标准编码的值
        virtual const std::wstring& GetStandardCodeValue() const  = 0;

        /// \brief 设置标准编码的值
        ///
        /// \param key 标准编码的值
        virtual void SetStandardCodeValue(const std::wstring& value) = 0;

    };
}